//package com.momo.webmagic;
//
//import us.codecraft.webmagic.*;
//import us.codecraft.webmagic.pipeline.FilePipeline;
//import us.codecraft.webmagic.pipeline.JsonFilePipeline;
//import us.codecraft.webmagic.pipeline.Pipeline;
//import us.codecraft.webmagic.processor.PageProcessor;
//
//import java.util.List;
//
///**
// * @author ：朱博
// * @description：自定义页面解析器
// * @date ：2020/12/20 10:13
// */
//public class com.momo.webmagic.job.JobProcessor implements PageProcessor {
//
//    //可以对爬虫就进行一些配置，包括编码，抓取间隔，超时时间、重试次数等。
//    private Site site = Site.me()
//            //  .setCharset("gbk")//设置字符编码
//            .setTimeOut(10000)//设置超时时间（10秒）
//            .setRetryTimes(3000)//设置重试间隔时间（10秒）
//            .setSleepTime(3);//设置重试次数
//
//    //解析页面
//    @Override
//    public void process(Page page) {
//        //获取Html 对象                          css选择器
//        page.putField("div",page.getHtml().css("div.mt h2").all());//获取所有的div类名为mt 下h2标签
//
//        ///使用Xpath解析(详细去W3cSchool 去了解 具体语法 )
//        page.putField("div2",page.getHtml().xpath("//div[@id=navitems-2014]/ul/li/a").all());
//
//        //正则表达式
//        page.putField("div3",page.getHtml().css("div#navitems-2014 a").regex(".*京东.*").all());
//
//        //处理结果的方法 (拿到头一条数据 )
//        page.putField("div4",page.getHtml().css("div#navitems-2014 a").regex(".*京东.*").get());
//        page.putField("div5",page.getHtml().css("div#navitems-2014 a").regex(".*京东.*").toString());
//
//        //获取目标地址所有的超链接链接
//        List<String> all = page.getHtml().css("div.mc a").links().regex(".*ebook.html$").all();
//        //拿到解析后的地址再次发送请求
//        page.addTargetRequests(all);
//        page.putField("url",page.getHtml().css("script").regex(".*link").all());
//    }
//
//    /**
//     * 可以对爬虫就进行一些配置，包括编码，抓取间隔，超时时间、重试次数等。
//     * @return
//     */
//    @Override
//    public Site getSite() {
//        return site;
//    }
//
//    public static void main(String[] args) {
//        //使用容器 调用自己的解析器
//        //主函数执爬虫代码
//       Spider.create(new com.momo.webmagic.job.JobProcessor())
//               .addUrl("https://www.jd.com/allSort.aspx")//设置爬取的数据Url
//               .addPipeline(new JsonFilePipeline("D:\\sprider"))//json文件方式输出
//               .thread(10)//10个线程在进行处理 设置多线程 使得效率更快
//               .run();
//    }
//}
